2

15. 配置类

Spring Boot支持基于java的配置,虽然可以使用XML源的SpringApplication,但是我们通常建议你的主源是一个@Configuration类。通常,定义main方法的类是一个很好的候选者,作为主要的@Configuration

许多Spring配置示例已经在Internet上发布,它们使用XML配置。如果可能,始终尝试使用等效的基于java的配置,搜索Enable*注解可能是一个很好的起点。

15.1 导入额外的配置类

你不必将所有@Configuration放入一个类中,可以使用@Import注解导入额外的配置类,或者,你可以使用@ComponentScan自动提取所有Spring组件,包括@Configuration类。

15.2 导入XML配置

如果你必须使用基于XML的配置,我们仍然建议你开始一个@Configuration类,然后你可以使用一个@ImportResource注解加载XML配置文件。

16. 自动配置

Spring Boot自动配置尝试根据你添加的jar依赖项自动配置Spring应用程序,例如,如果HSQLDB在你的类路径上,并且你没有手动配置任何数据库连接bean,那么Spring Boot将自动配置一个内存中的数据库。

你需要将@EnableAutoConfiguration@SpringBootApplication注解选择的添加到你的其中一个@Configuration类中。

你应该只添加一个@SpringBootApplication@EnableAutoConfiguration注解,我们通常建议只在主@Configuration类中添加其中一个或另一个。

16.1 逐渐取代自动配置

自动配置非侵入性,在任何时候,你都可以开始定义自己的配置来替换自动配置的特定部分。例如,如果你添加了自己的DataSource bean,默认的嵌入式数据库支持就会后退。

如果你需要了解哪些自动配置当前正在应用以及为什么,使用--debug开关启动应用程序,这样做可以为一些核心日志记录器选择调试日志,并将条件报告记录到控制台。

16.2 禁用特定类的自动配置

如果你发现你不想要的特定的自动配置类正在被应用,你可以使用@EnableAutoConfiguration的排除属性来禁用它们,如下例所示:

import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.context.annotation.*;

@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}

如果类不在类路径上,则可以使用注解的excludeName属性,并指定完全限定的名称。最后,你还可以通过使用spring.autoconfigure.exclude属性来控制要排除的自动配置类的列表。

你可以在注解级别和使用属性定义排除。

上一篇:结构化你的代码
下一篇:Spring bean和依赖项注入

博弈
2.5k 声望1.5k 粉丝

态度决定一切